#include "Liberay.h"


// 主函数
int main() {
    LibrarySystem lib;
    init_library(&lib);
    
    int choice;
    char input[100];
    int n =Password();
    while(n)
    {
    while(1) {
        display_menu();
        fgets(input, sizeof(input), stdin);
        choice = atoi(input);
        
        switch (choice) {
            case 0:
            free_library(&lib);
            printf("已退出！！！\n");
            return 0;
            case 1: { // 添加图书（尾插法）
                Book book;
                printf("请输入图书ID: ");
                fgets(book.id, sizeof(book.id), stdin);
                trim_string(book.id);
                
                printf("请输入书名: ");
                fgets(book.title, sizeof(book.title), stdin);
                trim_string(book.title);
                
                printf("请输入作者: ");
                fgets(book.author, sizeof(book.author), stdin);
                trim_string(book.author);
                
                printf("请输入出版社: ");
                fgets(book.publisher, sizeof(book.publisher), stdin);
                trim_string(book.publisher);
                
                printf("请输入ISBN: ");
                fgets(book.isbn, sizeof(book.isbn), stdin);
                trim_string(book.isbn);
                
                printf("请输入出版年份: ");
                fgets(input, sizeof(input), stdin);
                book.publish_year = atoi(input);
                
                printf("请输入分类: ");
                fgets(book.category, sizeof(book.category), stdin);
                trim_string(book.category);
                
                printf("请输入价格: ");
                fgets(input, sizeof(input), stdin);
                book.price = atof(input);
                
                printf("请输入总数量: ");
                fgets(input, sizeof(input), stdin);
                book.total_copies = atoi(input);
                
                book.available_copies = book.total_copies;
                book.status = AVAILABLE;
                book.prev = book.next = NULL;
                
                add_book(&lib, book);
                break;
            }
            case 2: { // 删除图书（根据编号ID删除）
                printf("请输入要删除的图书ID: ");
                fgets(input, sizeof(input), stdin);
                trim_string(input);
                delete_book(&lib, input);
                break;
            }
            case 3: { // 搜索图书
                printf("请输入搜索关键词(书名/作者/ID/ISBN): ");
                fgets(input, sizeof(input), stdin);
                trim_string(input);
                search_book(&lib, input);
                break;
            }
            case 4: // 显示所有图书
                print_all_books(&lib);
                break;
            case 5: { // 添加读者
                Reader reader;
                printf("请输入读者ID: ");
                fgets(reader.id, sizeof(reader.id), stdin);
                trim_string(reader.id);
                
                printf("请输入姓名: ");
                fgets(reader.name, sizeof(reader.name), stdin);
                trim_string(reader.name);
                
                printf("请输入性别: ");
                fgets(reader.gender, sizeof(reader.gender), stdin);
                trim_string(reader.gender);
                
                printf("请输入电话: ");
                fgets(reader.phone, sizeof(reader.phone), stdin);
                trim_string(reader.phone);
                
                printf("请输入邮箱: ");
                fgets(reader.email, sizeof(reader.email), stdin);
                trim_string(reader.email);
                
                printf("请输入地址: ");
                fgets(reader.address, sizeof(reader.address), stdin);
                trim_string(reader.address);
                
                reader.register_date = time(NULL);
                reader.max_borrow = 5; // 默认最大借阅量
                reader.current_borrow = 0;
                reader.prev = reader.next = NULL;
                
                add_reader(&lib, reader);
                break;
            }
            case 6: { // 删除读者
                printf("请输入要删除的读者ID: ");
                fgets(input, sizeof(input), stdin);
                trim_string(input);
                delete_reader(&lib, input);
                break;
            }
            case 7: { // 搜索读者
                printf("请输入搜索关键词(姓名/ID/电话): ");
                fgets(input, sizeof(input), stdin);
                trim_string(input);
                search_reader(&lib, input);
                break;
            }
            case 8: // 显示所有读者
                print_all_readers(&lib);
                break;
            case 9: { // 借书
                char book_id[20], reader_id[20];
                printf("请输入图书ID: ");
                fgets(book_id, sizeof(book_id), stdin);
                trim_string(book_id);
                
                printf("请输入读者ID: ");
                fgets(reader_id, sizeof(reader_id), stdin);
                trim_string(reader_id);
                
                borrow_book(&lib, book_id, reader_id);
                break;
            }
            case 10: { // 还书
                printf("请输入借阅记录ID: ");
                fgets(input, sizeof(input), stdin);
                trim_string(input);
                return_book(&lib, input);
                break;
            }
            case 11: // 显示所有借阅记录
                print_all_records(&lib);
                break;
            // case 12: { // 保存数据到文件
            //     printf("请输入文件名(默认: library.dat): ");
            //     fgets(input, sizeof(input), stdin);
            //     trim_string(input);
            //     if (strlen(input) == 0) {
            //         strcpy(input, "library.dat");
            //     }
            //     save_to_file(&lib, input);
            //     break;
            // }
            // case 13: { // 从文件加载数据
            //     printf("请输入文件名(默认: library.dat): ");
            //     fgets(input, sizeof(input), stdin);
            //     trim_string(input);
            //     if (strlen(input) == 0) {
            //         strcpy(input, "library.dat");
            //     }
            //     load_from_file(&lib, input);
            //     break;
            }
        }
    }
    return 0;
}
   
